/*
 * @Descripttion: 
 * @version: 
 * @Author: zhengys
 * @Date: 2021-02-27 16:01:44
 * @LastEditors: zhengys
 * @LastEditTime: 2021-02-27 16:43:37
 */

const fs = require('fs');
const path = require('path');
const url = require('url');

// 私有方法
function getFileMime(extName){
  // readFileSync 为 readFile 的同步方法
  let data = fs.readFileSync('./data/mime.json'); // 注意：因为该方法在 app.js 引用，所以相对位置应以app.js为基点
  let mimeObj = JSON.parse(data.toString());
  return mimeObj[extName]
}


exports.static = (req,res,staticPath) => {

  // 1. 获取地址
  let pathName = url.parse(req.url).pathname;
  pathName = pathName == '/' ? '/index.html' : pathName;
  
  // 获取后缀名 path.extname();
  let extname = path.extname(pathName)
  
  // 2. 通过fs模块读取文件
  if(pathName != '/favicon.ico'){
    fs.readFile(`./${staticPath}${pathName}`,(err,data) => {
      if(err){
        fs.readFile('./static/404.html',(err,data404)=>{
          if(err){
            console.log('404')
          }else{
            res.writeHead(404, {'Content-Type': 'text/html;charset="utf-8"'});
            res.end(data404);
          }
        })
      }else{
        let mime = getFileMime(extname) // 根据对应的后缀名，获取对应的文件格式
        res.writeHead(200, {'Content-Type': `${mime};charset="utf-8"`});
        res.end(data);
      }
    })
  }
}